/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package TapestryModel;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Link</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link TapestryModel.Link#isHandler <em>Handler</em>}</li>
 *   <li>{@link TapestryModel.Link#getTarget <em>Target</em>}</li>
 *   <li>{@link TapestryModel.Link#getLabel <em>Label</em>}</li>
 * </ul>
 * </p>
 *
 * @see TapestryModel.TapestryModelPackage#getLink()
 * @model abstract="true"
 * @generated
 */
public interface Link extends EObject {
    /**
     * Returns the value of the '<em><b>Handler</b></em>' attribute.
     * The default value is <code>"false"</code>.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Handler</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Handler</em>' attribute.
     * @see #setHandler(boolean)
     * @see TapestryModel.TapestryModelPackage#getLink_Handler()
     * @model default="false" required="true"
     * @generated
     */
    boolean isHandler();

    /**
     * Sets the value of the '{@link TapestryModel.Link#isHandler <em>Handler</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Handler</em>' attribute.
     * @see #isHandler()
     * @generated
     */
    void setHandler(boolean value);

    /**
     * Returns the value of the '<em><b>Target</b></em>' reference.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Target</em>' reference isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Target</em>' reference.
     * @see #setTarget(Page)
     * @see TapestryModel.TapestryModelPackage#getLink_Target()
     * @model required="true"
     * @generated
     */
    Page getTarget();

    /**
     * Sets the value of the '{@link TapestryModel.Link#getTarget <em>Target</em>}' reference.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Target</em>' reference.
     * @see #getTarget()
     * @generated
     */
    void setTarget(Page value);

    /**
     * Returns the value of the '<em><b>Label</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Label</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Label</em>' attribute.
     * @see #setLabel(String)
     * @see TapestryModel.TapestryModelPackage#getLink_Label()
     * @model
     * @generated
     */
    String getLabel();

    /**
     * Sets the value of the '{@link TapestryModel.Link#getLabel <em>Label</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Label</em>' attribute.
     * @see #getLabel()
     * @generated
     */
    void setLabel(String value);

    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @model kind="operation"
     * @generated
     */
    String getLinkLabel();

} // Link
